package cn.dsp.admin.service;

import cn.dsp.admin.entity.UserRole;
import cn.dsp.admin.entity.admin.Admin;
import cn.dsp.admin.vo.AdminVO;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * 处理用户数据的业务层接口
 */
public interface IAdminService {

    /**
     * 管理员注册
     * @param admin 新用户数据
     */
    void reg(Admin admin,String created_user,Integer storeId);

    /**
     * 用户登录
     * @param adminName 管理员用户名
     * @param password 密码
     * @return 成功登录的用户数据
     */
    Admin login( String adminName, String password);

    /**
     * 修改密码
     * @param adminId 管理员id
     * @param username 执行操作的用户名
     * @param oldPassword 原密码
     * @param newPassword 新密码
     */
    void changePassword(Integer adminId,String username,String oldPassword,String newPassword);

    /**
     * 修改个人资料
     * @param adminId 用户id
     * @param username 用户名
     * @param admin 管理员实例对象
     */
    void changeInfo(Integer adminId, String username, Admin admin);

    void changeInfoByAdmin(Admin admin, String modifiedUser);


    /**
     * 根据管理员id查询管理员数据
     * @param adminId 管理员id
     * @return 返回匹配的管理员数据
     */
    Admin getByAdminId(Integer adminId);

    Admin getByAdminName(String adminName);

    /**
     * 根据用户Id查询VO对象
     * @param adminId 用户id
     * @return vo
     */
    AdminVO getAdminVO(Integer adminId);

    /**
     * 修改头像
     * @param adminId 用户id
     * @param username 执行修改的用户
     * @param avatar 头像路径
     */
    void changeAvatar(Integer adminId,String username,String avatar);

    /**
     * 显示商家所有管理员信息
     */
    List<Admin> getAllAdmin(Integer storeId);

    /**
     *  根据条件查询符合的角色信息
     */
    List<Admin> getAdminByTerm(Integer storeId,String term);

    /**
     * 删除Admin数据信息
     */
    void deleteByAdminId(Integer adminId);

    /**移出所有绑定角色*/
    void deleteAllRole(Integer adminId);

    /**查询某个绑定角色*/
    UserRole getUserRole(UserRole userRole);

    /**田间绑定角色*/
    void adminAddRole(UserRole userRole);

}
